#ifndef SONG_H
#define SONG_H

#include <QUrl>
#include <QString>
#include <QSqlDatabase>
#include <QSqlError>
#include <QSqlQuery>

class Song
{
public:
    Song();
    Song(const QUrl& url);

    void setIsLike(bool islike);
    void setHistory(bool isHistory);
    void setMusicName(const QString& musicname);
    void setMusicSingerName(const QString& singername);
    void setAlbumName(const QString& albumname);
    void setDuration(const qint64& duration);
    void setMusicUrl(const QUrl& url);
    void setMusicId(const QString& musicId);

    bool getIsLike();
    bool getIsHistory();
    QString getMusicName();
    QString getSingerName();
    QString getAlbumName();
    qint64 getDuration();
    QUrl getMusicUrl();
    QString getMusicId();

    QString getLrcFilePath() const;

    void insertMusicToDB();

    void plainMsg();

private:
    void parseMediaMetaData();  //解析文件内容，歌曲名称、歌手名称、专辑等


private:
    bool isLike;            // 标记⾳乐是否为我喜欢
    bool isHistory;         // 标记⾳乐是否播放过

    // ⾳乐的基本信息有：歌曲名称、歌⼿名称、专辑名称、总时⻓
    QString musicName;
    QString singerName;
    QString albumName;
    qint64 Duration;        // ⾳乐的持续时⻓，即播放总的时⻓

    // 为了标记歌曲的唯⼀性，给歌曲设置id
    // 磁盘上的歌曲⽂件经常删除或者修改位置，导致播放时找不到⽂件，或者重复添加
    // 此处⽤musicId来维护播放列表中⾳乐的唯⼀性
    QString musicId;
    QUrl musicUrl;          // ⾳乐在磁盘中的位置
};

#endif // SONG_H
